package com.huluobo.a2112mvvmdouyindemo.utils;

import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import com.bumptech.glide.load.resource.bitmap.CircleCrop;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.huluobo.a2112mvvmdouyindemo.R;

/**
 * 图片加载工具
 * Created by LC on 2024/3/25.
 */
public class ImageLoader {
    private static ImageLoader imageLoader;

    //单例模式核心
    private ImageLoader() {
    }

    public static ImageLoader getInstance() {
        if (imageLoader == null) {
            synchronized (ImageLoader.class) {
                if (imageLoader == null) {
                    imageLoader = new ImageLoader();
                }
            }
        }
        return imageLoader;
    }

    /**
     * 加载普通图片
     *
     * @param context   上下文
     * @param url       图片地址
     * @param imageView 图片控件
     */
    public void loadImage(Context context, String url, ImageView imageView) {
        Glide.with(context)
                .load(url)
                .skipMemoryCache(true)//跳过内存缓存
                .placeholder(new ColorDrawable(Color.GRAY))//占位图,当图片没加载出来的时候会优先展示占位图
                .error(R.drawable.baseline_error_24)
                .into(imageView);
    }

    /**
     * 加载圆形图片
     *
     * @param context   上下文
     * @param url       图片地址
     * @param imageView 图片控件
     */
    public void loadCircleImage(Context context, String url, ImageView imageView) {
        Glide.with(context)
                .load(url)
                .skipMemoryCache(true)//跳过内存缓存
                .placeholder(new ColorDrawable(Color.GRAY))//占位图,当图片没加载出来的时候会优先展示占位图
                .error(R.drawable.baseline_error_24)
                .transform(new CircleCrop(), new CenterCrop())//CircleCrop 圆形加载器,CenterCrop 中心加载器
                .into(imageView);
    }

    /**
     * 加载圆角图片
     *
     * @param context   上下文
     * @param url       图片地址
     * @param imageView 图片控件
     * @param radius    圆角半径
     */
    public void loadRoundImage(Context context, String url, ImageView imageView, int radius) {
        Glide.with(context)
                .load(url)
                .skipMemoryCache(true)//跳过内存缓存
                .placeholder(new ColorDrawable(Color.GRAY))//占位图,当图片没加载出来的时候会优先展示占位图
                .error(R.drawable.baseline_error_24)
                .transform(new RoundedCorners(radius), new CenterCrop())//RoundedCorners 圆角加载器参数是半径,CenterCrop 中心加载器
                .into(imageView);
    }
}
